package com.atguigu.gmall.weball.controller;

import com.atguigu.gmall.feign.order.OrderFeignClient;
import com.atguigu.gmall.order.entity.OrderInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;

/**
 * @Description
 * @Return
 * @Author https://weiranyi.github.io
 * @Date Created in 2022-12-21 22:49
 **/
@Controller
public class PayController {
    @Autowired
    OrderFeignClient orderFeignClient;

    // 跳转到支付确认页 http://payment.gmall.com/pay.html?orderId=812460114928738191
    @GetMapping("pay.html")
    public String toPayPage(@RequestParam("orderId") Long orderId, Model model) {
        // 订单服务【必须得存在user_id以避免全库全表扫描】
        OrderInfo orderInfo = orderFeignClient.getOrderInfo(orderId).getData();
        if (orderInfo.getExpireTime().before(new Date())) {
            // 过期时间(假设13：00)，再当前时间（假设18：00），之前 -> 表示过期了
            return "payment/payerr";
        }
        model.addAttribute("orderInfo", orderInfo);
        return "payment/pay";
    }

    //支付成功到商城的success.html页面

    /**
     * 不可在同步跳转页修改订单状态：
     *    - 一方面使用同步跳转改状态需要验签
     *    - 另一方面也是最重要的，支付宝来调的时候用户看到支付宝成功付款页直接关闭了浏览器，等于商城的订单状态还没改，钱却付了，这是不允许出现的
     * @return
     */
    @GetMapping("/pay/success.html")
    public String paySuccessPage(){
        return "payment/success";
    }
}
